#! python3
# 发送电子邮件

import smtplib


def sendEmail():
    try:
        # 1、连接SMTP服务器:
        isTLS = True
        if isTLS:
            smtpObj = smtplib.SMTP('smtp.qq.com', 587)
        else:
            # 如果 smtplib.SMTP()调用不成功，你的 SMTP 服务器可能不支持 TLS 端口 587。
            # 在这种情况下，你需要利用smtplib.SMTP_SSL()和 465 端口，来创建 SMTP 对象
            smtpObj = smtplib.SMTP_SSL('smtp.qq.com', 465)
        print(smtpObj)

        # 2、建立到服务器的连接:向 SMTP 电子邮件服务器“打招呼”。
        # 在返回的元组中，第一项是整数 250（SMTP 中“成功”的代码），则问候成功了
        print(smtpObj.ehlo())

        # 3、开始 TLS 加密
        # starttls() 让 SMTP 连接处于TLS模式。返回值220:该服务器已准备就绪
        if isTLS:
            # 如果是连接到 587 端口（使用 TLS），需要调用 starttls()方法。
            print(smtpObj.starttls())
        else:
            # 如果是连接到 465 端口（使用 SSL），就已经加密好了，应该跳过这步
            pass

        # 4、登录到 SMTP 服务器
        print(smtpObj.login('814375791@qq.com', 'tjcfshzhldxdbfcf'))

        # 5、发送电子邮件
        # sendmail()的返回值是一个字典。
        # 对于电子邮件传送失败的每个收件人，该字典中会有一个键值对。
        # 空的字典意味着对所有收件人已成功发送电子邮件
        res = smtpObj.sendmail('814375791@qq.com',  # 发件人
                               ['244663477@qq.com', '814375791@qq.com'],  # 收件人
                               'Subject: 主题subject.\n这是邮件正文，test'.encode('utf-8')  # 标题及内容
                               )
        print(res)

        # 6、从 SMTP 服务器断开
        print(smtpObj.quit())

    except Exception as exc:
        print("程序异常了：" + exc)


if __name__ == '__main__':
    sendEmail()
